package main

import "fmt"

func main() {
	arr := []int{4, 2, 22, 4, 5, 456, 2, 45, 45, 3, 34, 523, 5, 4, 0, 3, 1}
	fmt.Println(bubbleSort(arr))
}

func Swap(arr []int, a, b int) []int {
	temp := arr[a]
	arr[a] = arr[b]
	arr[b] = temp

	return arr
}

/*
冒泡排序：
比较相邻的元素。如果第一个比第二个大，就交换它们两个；
对每一对相邻元素作同样的工作，从开始第一对到结尾的最后一对，这样在最后的元素应该会是最大的数；
针对所有的元素重复以上的步骤，除了最后一个；
重复步骤1~3，直到排序完成。
*/

func bubbleSort(arr []int) []int {
	if len(arr) <= 1 {
		return arr
	}

	for e := len(arr) - 1; e > 0; e-- {
		for i := 0; i < e; i++ {
			if arr[i] > arr[i+1] {
				Swap(arr, i, i+1)
			}
		}
	}

	return arr
}
